#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<malloc.h>

#define MaxSize 50
typedef int ElemType;

typedef struct
{
	ElemType data[MaxSize];
	int length;
}SqList;
void CreatList(SqList * &L,ElemType a[],int n)
{
	int i = 0;
	L = (SqList*)malloc(sizeof(SqList));
	for (i = 0; i < n; i++)
	{
		L->data[i] = a[i];
	}
	L->length = n;
}
void InitList(SqList *&L)
{
	L = (SqList*)(malloc(sizeof(SqList)));
	L->length = 0;
}
void DestroyList(SqList* &L)
{
	free(L);
}
bool ListEmpty(SqList * L)
{
	return (L->length == 0);
}
int ListLength(SqList* L)
{
	return L->length;
}
void DispList(SqList* L)
{
	int i = 0;
	for (i = 0; i < L->length; i++)
	{
		printf("%d ", L->data[i]);
	}
	printf("\n");
}
bool GetElem(SqList* L, int i,ElemType&e)
{
	if (i<1 || i>L->length)
	{
		return false;
	}
	e = L->data[i - 1];
	return true;
}
int LocateElem(SqList* L, ElemType e)
{
	int i = 0;
	for (i = 0; i < L->length; i++)
	{
		if (e == L->data[i])
		{
			return i + 1;
		}
	}
	return 0;
}
bool ListInsert(SqList* &L, int i, ElemType e)
{
	int j = 0;
	if (i<1 || i>L->length + 1)
	{
		return false;
	}
	i--;
	for (j = L->length; j > i; j--)
	{
		L->data[j] = L->data[j - 1];

	}
	L->data[i] = e;
	L->length++;
}
bool ListDelete(SqList *&L, int i, ElemType &e)
{
	int j = 0;
	if (i<1 || i>L->length)
	{
		return false;
	}
	for (j = i; j < L->length - 1; j++)
	{
		L->data[j] = L->data[j + 1];

	}
	L->length--;
	return true;
}
int main()
{

	SqList *L;
	int arr[] = { 1, 2, 3, 4, 5 };
	int n = 5;
	int e=9;
	CreatList(L, arr, n);
	//InitList(L);
	//DestroyList(L);
	DispList(L);
	//GetElem(L, 2,  e);
	//printf("%d\n", e);
	int tmp = LocateElem(L, e);
	ListDelete(L, 5, e);
	return 0;
}